//package com.example.hadoop;
//
//import org.apache.hadoop.fs.*;
//import org.apache.hadoop.io.IOUtils;
//import org.junit.After;
//import org.junit.Before;
//import org.junit.Test;
//
//import javax.security.auth.login.Configuration;
//import java.io.FileInputStream;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.nio.file.FileSystem;
//
//public class HDFSTest {
//
//    private Configuration configuration;
//    private FileSystem fileSystem;
//
//    @Before
//    public void before() throws IOException {
//        // 一开始首先加载配置文件，包括默认的配置文件
//        // 自定义的会覆盖默认的
//        configuration = new Configuration(true);
//        // 设置block大小为1MB，上传文件的时候使用
//        configuration.set("dfs.blocksize", "1048576");
//        // 获取filesystem对象，操作HDFS
//        fileSystem = FileSystem.get(configuration);
//    }
//
//    @After
//    public void after() throws IOException {
//        // 用完后关闭到HDFS的连接
//        fileSystem.close();
//    }
//
//    @Test
//    public void testLs() throws IOException {
//        FileStatus[] fss = fileSystem.listStatus(new Path("/"));
//        for (FileStatus fileStatus : fss) {
//            System.out.println(fileStatus);
//        }
//    }
//
//    @Test
//    public void testAddDir() throws IOException {
//        boolean flag = fileSystem.mkdirs(new Path("/usr/local/hadoop"));
//        System.out.println(flag ? "创建成功" : "失败");
//    }
//
//    @Test
//    public void deleteDir() throws IOException {
//        boolean flag = fileSystem.delete(new Path("/usr/local"));
//        System.out.println(flag ? "ok" : "nook");
//    }
//
//    @Test
//    public void deleteDir2() throws IOException {
////        boolean flag = fileSystem.delete(new Path("/usr/local"), false);
//        //                                                                       是否迭代删除
//        boolean flag = fileSystem.delete(new Path("/usr/local"), true);
//        System.out.println(flag ? "ok" : "nook");
//    }
//
//    @Test
//    public void uploadFile() throws IOException {
//        FSDataOutputStream fsdos = fileSystem.create(new Path("/opt/hadoop.tar.gz"));
//
//        FileInputStream fis = new FileInputStream("E:\\usr\\local\\hadoop-2.6.5-win10x64-1809.tar.gz");
//
//        byte[] buf = new byte[1024];
//        int len = -1;
//
//        while ((len = fis.read(buf)) != -1) {
//            // 从buf读字节len个，因为读取了len个
//            // 写到HDFS上
//            fsdos.write(buf, 0, len);
//        }
//
//        // 关闭输入流
//        fis.close();
//        // 冲刷缓冲区到HDFS
//        fsdos.flush();
//        // 关闭输出流
//        fsdos.close();
//
//    }
//
//
//    @Test
//    public void uploadFile2() throws IOException {
//        FSDataOutputStream fsdos = fileSystem.create(new Path("/opt/hadoop--.tar.gz"));
//
//        FileInputStream fis = new FileInputStream("E:\\usr\\local\\hadoop-2.6.5-win10x64-1809.tar.gz");
//
//        // 拷贝文件到HDFS
//        IOUtils.copyBytes(fis, fsdos, configuration);
//
//        // 关闭输入流
//        fis.close();
//        // 冲刷缓冲区到HDFS
//        fsdos.flush();
//        // 关闭输出流
//        fsdos.close();
//
//    }
//
//
//    @Test
//    public void deleteFile() throws IOException {
//        boolean flag = fileSystem.delete(new Path("/opt/hadoop.tar.gz"), true);
//        System.out.println(flag ? "ok" : "nook");
//    }
//
//    @Test
//    public void downloadFile() throws IOException {
//        FSDataInputStream fsdis = fileSystem.open(new Path("/opt/hadoop.tar.gz"));
//
//        FileOutputStream fos = new FileOutputStream("E:\\myhadoop.tar.gz");
//
//        byte[] buf = new byte[1024];
//        int len = -1;
//
//        while ((len = fsdis.read(buf)) != -1) {
//            // 从buf读字节len个，因为读取了len个
//            // 写到HDFS上
//            fos.write(buf, 0, len);
//        }
//
//        // 关闭输入流
//        fsdis.close();
//        // 冲刷缓冲区到HDFS
//        fos.flush();
//        // 关闭输出流
//        fos.close();
//
//    }
//
//    @Test
//    public void downloadFile2() throws IOException {
//        FSDataInputStream fsdis = fileSystem.open(new Path("/opt/hadoop.tar.gz"));
//
//        FileOutputStream fos = new FileOutputStream("E:\\myhadoop---.tar.gz");
//
//        IOUtils.copyBytes(fsdis, fos, configuration);
//
//        // 关闭输入流
//        fsdis.close();
//        // 冲刷缓冲区到HDFS
//        fos.flush();
//        // 关闭输出流
//        fos.close();
//
//    }
//
//}
